<?php
/**
 * 后台用户模型
 * @createtime 2015-08-21 14:48
 * @author Halu
 */
namespace Admin\Model;
use Think\Model;
class AdminModel extends Model {
	
	/**
	 * 通过用户名获取用户信息
	 * @param string $username 用户名
	 * @return bool/array 
	 */
	public function getUserInfoByName($username) {
		if (empty($username) || !is_string($username)) {
			return false;
		}
		return $this->where(array('username'=>$username))->find();
	}
	
	/**
	 * 通过用户ID获取用户信息
	 * @param int $uid 用户ID
	 * @return bool/array
	 */
	public function getUserInfoById($uid){
		if (empty($uid) || !is_int($uid)) {
			return false;
		}
		return $this->where(array('id'=>$uid))->find();
	}
	
	/**
	 * 更新用户最后登录时间
	 * @return void
	 */
	public function upLastloginTime(){
		$uid = session('uid');
		if (!$uid) {
			return false;
		}
		$this->where(array('id'=>$uid))->save(array('lasttime'=>NOW_TIME));
	}
	
	/**
	 * 获取用户列表
	 * @param array $where 查询条件
	 * @param string $order 排序方式
	 * @param string $limit 查询条数
	 * @return array
	 */
	public function getUserList($where=array(),$order='id desc',$limit='') {
		if (!empty($where) && is_array($where)) {
			$this->where($where);
		}
		if (!empty($order) && is_string($order)) {
			$this->order($order);
		}
		if (!empty($limit) && (is_string($limit) || is_numeric($limit))) {
			$this->limit($limit);
		}
		return $this->select();
	}
	
	/**
	 * 统计用户数量
	 * @param array $where 查询条件
	 * @return int
	 */
	public function getUserNum($where = array()){
		if ($where && is_array($where)) {
			$this->where($where);
		}
		return $this->count();
	}
	
	/**
	 * 检测用户名是否可用
	 * @param string $username 用户名
	 * @param array $where 条件
	 * @return bool true可用,false不可用
	 */	
	public function checkUsername($username, $where=array()) {
		if (empty($username) || !is_string($username)) {
			return false;
		}
		$where ['username'] = $username;
		if ($this->where($where)->count()) {
			return false;
		}
		return true;
	}
	
	/**
	 * 检测邮箱是否可用
	 * @param string $email 电子邮箱
	 * @param array $where 条件
	 * @return bool true可用,false不可用
	 */
	public function checkEmail($email, $where=array()) {
		if (empty($email) || !is_string($email)) {
			return false;
		}
		$where ['email'] = $email;
		if ($this->where($where)->count()) {
			return false;
		}
		return true;
	}
	
	/**
	 * 标记删除用户
	 * @param int $uid
	 * @return bool
	 */
	public function delUser($uid) {
		if (!$uid || !is_numeric($uid)) {
			return false;
		}
		if ($this->where(array('id'=>$uid))->save(array('status'=>-1)) !== false){
			return true;
		}
		return false;
	}
	
	/**
	 * 获取用户状态
	 * @param int $uid
	 * @return mixed
	 */
	public function getUserStatus($uid){
		if (!$uid || !is_numeric($uid)) {
			return false;
		}
		return $this->where(array('id'=>$uid))->getField('status');
	}
	
	/**
	 * 更改用户状态
	 * @param int $uid 用户ID
	 * @param int $status 状态
	 * @return bool
	 */
	public function changeStatus($status,$uid){
		if (!$uid) {
			return false;
		}
		if ($this->where(array('id'=>$uid))->save(array('status'=>$status)) !== false) {
			return true;
		}
		return false;
	}
	
}